package chapter07

import scala.collection.mutable.ArrayBuffer

/**
 * Created with IntelliJ IDEA.
 * ClassName: Test02_ArrayBuffer
 * Package: chapter07
 * Description:
 * User: fzykd
 *
 * @Author: LQH
 *          Date: 2023-06-25
 *          Time: 18:15
 */

object Test02_ArrayBuffer {
  def main(args: Array[String]): Unit = {
    //1.创建可变数组 不给值 默认大小16
    val arr1:ArrayBuffer[Int] = new ArrayBuffer[Int]()
    //伴生对象创建
    val arr2 = ArrayBuffer(23,34,45,56,67)

    println(arr1.mkString(",")) //空
    //直接打印引用 默认调用了toString方法
    println(arr2) //ArrayBuffer(23, 34, 45, 56, 67)
    //但是不可变数组的Array不行 因为他是继承的java.io.Serializable 自带同toString

    //访问元素
    println(arr2(0))

    println("-------------------------")
    //添加元素 不能直接arr(0) = 1 因为是空的 所以会有空指针异常
    val newArr1 = arr1 :+ 15 //ArrayBuffer() 这种方法添加也要赋给一个新的数组 不可变使用
    println(newArr1)
    println(arr1)

    println("---------------------")
    arr1 += 19 //也可以将返回值的赋给一个新的数组 两个引用执行同一个对象
    println(arr1)

    //冒号不能省略
    20 +=: arr1
    println(arr1)

    //方法追加
    arr1.append(36)
    arr1.prepend(11)
    //任意位置添加 在1下标 添加13和49
    arr1.insert(1,13,49)
    println(arr1)
    //添加一个数组 指定位置
    arr1.insertAll(2,arr2)

    //删除指定位置的元素
    arr1.remove(3)
    //从某个下标开始 连续删多少个数
    arr1.remove(0,4)
    println(arr1)
    //按照元素删除 找到了删除 找不到什么都不做
    arr1 -= 12
    println(arr1)


    //5.可变数组转换为 不可变数组
    val arr = ArrayBuffer(23,56,98)
    //直接调用toArray
    val newArr = arr.toArray
    println(newArr.mkString(","))
    println(arr)

    //不可变数组 转可变数组
    val buffer = newArr.toBuffer
    println(buffer)



  }
}
